package com.example.algorithm.greedy;

/**
 * @author : zhy
 * @since : 2022/8/26
 * 跳跃游戏
 */
public class JumpGame {

    /**
     * 方法一
     * @param nums
     * @return
     */
    public boolean canJump(int[] nums) {
        int len=nums.length;
        if(len==1)
        {
            return true;
        }
        int max=0;
        int sum=0;
        for(int i=0;i<len;i++)
        {
            max=i+nums[i];
            sum=Math.max(sum,max);
            if(sum<=i&&i!=len-1)
            {
                return false;
            }
        }
        return true;
    }


    /**
     * 方法二
     * @param nums
     * @return
     */
    public boolean canJump1(int[] nums)
    {
        int len=nums.length;
        if(len==1)
        {
            return true;
        }
        int coverRange=0;
        for(int i=0;i<=coverRange;i++)
        {
            coverRange=Math.max(coverRange,i+nums[i]);
            if(coverRange>=len-1)
            {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        JumpGame jumpGame = new JumpGame();
        int []can={3,2,1,0,4};
        boolean b = jumpGame.canJump(can);
        System.out.println(b);
    }
}
